----------------------------------------------------------
--- Evaluation contexts: Adding dynamic threads to IMP ---
----------------------------------------------------------

Suggested steps to follow in order to extend the oringinal reduction semantics
with evaluation contexts of IMP in Maude to include dynamic threads:

1) Modify imp-evaluation-contexts.maude: Add Maude commands for executing the new programs.

2) Run imp-evaluation-contexts.maude: Everything working before should still work;
   the new programs should get stuck on the first attempt to spawn a thread.

3) Modify imp-split-plug-evaluation-contexts.maude: Add the corresponding splitting/cooling
   equations and rules stating that spawn(S) can reduce S and that spawn(S1) ; S2 can reduce S2.
   
3) Modify imp-semantics-evaluation-contexts-x.maude, for each x in {1,2,3}:
   a) Add the actual reduction semantics with evaluation contexts rule of dynamic
      threads that dissolves an empty thread (i.e., that reduces spawn(skip) to skip);
   b) Add the structural equation enforcing right associativity of sequential composition.

4) Run imp-evaluation-contexts.maude and check that all programs evaluate properly.

------------------------------
--- Observations, thoughts ---
------------------------------

1) The splitting/pugging rules/equations and the rule for dissolving threads are normal and modular.

2) However, we also had to add a structural equation for enforcing right associativity of sequential
   composition.  This equation is an artifact of the new dynamic threads feature (to keep the
   definition of the latter simpler and modular) and does not involve the new syntax (spawn).
